package entity

import (
	"image"
	"image/draw"
	"image/jpeg"
	_ "image/jpeg"
	_ "image/png"
	"log"
	"os"
)

type ImgBean struct {
	Img        image.Image
	FileName   string
	X, Y, W, H int
}

func MaxW(beans []ImgBean) {

}
func MaxX(beans []ImgBean) {

}

func Marge(t string, outFile *os.File, file1 *os.File, file2 *os.File) {
	defer file1.Close()
	defer file2.Close()
	defer outFile.Close()
	// image.Decode 图片
	var (
		img1, img2 image.Image
		err        error
	)
	if img1, _, err = image.Decode(file1); err != nil {
		log.Fatal(err)
		return
	}
	if img2, _, err = image.Decode(file2); err != nil {
		log.Fatal(err)
		return
	}
	b1 := img1.Bounds()
	b2 := img2.Bounds()

	if t == "X" {
		// 将两个图片合成一张
		newWidth := b1.Max.X + b2.Max.X                                                        //新宽度 = 两张宽度的和
		newHeight := b1.Max.Y                                                                  //
		newImg := image.NewNRGBA(image.Rect(0, 0, newWidth, newHeight))                        //创建一个新RGBA图像
		draw.Draw(newImg, newImg.Bounds(), img1, b1.Min, draw.Over)                            //画上第一张缩放后的图片
		draw.Draw(newImg, newImg.Bounds(), img2, b1.Min.Sub(image.Pt(b1.Max.X, 0)), draw.Over) //画上第二张缩放后的图片（这里需要注意X值的起始位置）
		jpeg.Encode(outFile, newImg, &jpeg.Options{100})
	}
	if t == "Y" {
		// 将两个图片合成一张
		newWidth := b1.Max.X                                                                   //新宽度 = 随意一张图片的宽度
		newHeight := b1.Max.Y + b2.Max.Y                                                       // 新图片的高度为两张图片高度的和
		newImg := image.NewNRGBA(image.Rect(0, 0, newWidth, newHeight))                        //创建一个新RGBA图像
		draw.Draw(newImg, newImg.Bounds(), img1, b1.Min, draw.Over)                            //画上第一张缩放后的图片
		draw.Draw(newImg, newImg.Bounds(), img2, b1.Min.Sub(image.Pt(0, b1.Max.Y)), draw.Over) //画上第二张缩放后的图片（这里需要注意Y值的起始位置）
		jpeg.Encode(outFile, newImg, &jpeg.Options{100})
	}

	// 保存文件

}
